#ifndef _ARCH_BLOQUES_LIBRES_H_
#define _ARCH_BLOQUES_LIBRES_H_

/**
 * Esa clase implementa un archivo de espacios libres. Este solo almacena
 * numeros de bloque que se encuentran sin ocupar en el archivo que controla.
 * Intenta mantener el menor espacio ocupado posible, por lo que siempre
 * que puede se trunca.
 */ 
 

#include "arch_control.h"
#include <limits.h>
#include <string>

class ArchBloquesLibres : public ArchControl {
	
	public:
	
		static unsigned int ERROR;
	
		ArchBloquesLibres(std::string &nombre, unsigned int tam_bloque);
		
		~ArchBloquesLibres(){}
		
		/*
		 * Obtiene el un numero de bloque libre y lo quita del archivo.
		 * Si no hay bloques libres, devuelve ERROR.
		 */
		unsigned get_bloque_libre() throw(ExcepArchCerrado, ExcepLeerBloque);
		
		unsigned int get_espacio_libre()  throw(ExcepArchCerrado, ExcepLeerBloque);
		
		TiposArchivo get_tipo_archivo();
		
				
};
#endif
